As pointed out in the IBM System/370 Principles of Operation, 7th Edition, March 1980, IBM publication GA22-7000-6, in chapter 9, there is a characterization of a floating point number as consisting of a signed hexadecimal "fraction" and an unsigned 7-bit binary integer called the "characteristic". The "characteristic" represents a signed exponent and is obtained by adding 64 to the exponent value. This is termed "excess-64 notation". The range of the characteristic is 0-127, which corresponds to an exponent range of -64 to +63. The value of a floating point number is the product of its fraction and the number 16 raised to the power of the exponent which is represented by its characteristic.
The fraction of a floating point number is treated as a hexadecimal number because it is considered to be multiplied by a number which is a power of 16. The term "fraction" indicates that the radix point is assumed to be immediately to the left of the leftmost fraction digit. The fraction is represented by its absolute value and a separate sign bit. The entire number is positive or negative, depending on whether the sign bit of the fraction is 0 or 1, respectively.
When a floating point operation would cause the result exponent to exceed 63, the characteristic wraps around from 127 to 0 and an exponent-overflow condition exists. The resultant characteristic is then too small by 128. When an operation would cause the exponent to be less than -64, the characteristic wraps around from 0 to 127 and an exponent-underflow condition exists. The resultant characteristic is then too large by 128, except that a 0 characteristic is produced when a true 0 is forced.
In computers of the IBM System/370 type having a floating point arithmetic capability, floating point numbers have a 32-bit (short) format, a 64-bit (long) format, or a 128-bit (extended) format. The extended floating point number has a 28-digit fraction and consists of two long floating point numbers which are called the high-order and low-order parts. The high-order part may be any long floating point number. The fraction of the high-order part contains the leftmost 14 hexadecimal significant digits of the 28-digit fraction. The characteristic and sign of the high-order part are the characteristic and sign of the extended floating point number. If the high-order part is normalized, the extended number is considered normalized. The fraction of the low-order part contains the rightmost 14 digits of the 28-digit fraction. The sign and characteristic of the low-order part of an extended operand are ignored. Relatedly, the process of normalization consists of shifting the fraction left, one digit at a time, until the high-order hexadecimal digit is non-zero and concurrently reducing the characteristic by the number of hexadecimal digits shifted.
In the extended precision format, a floating point number of magnitude m lies in the range EQU 16.sup.(-65) .ltoreq.m.ltoreq.(1-16.sup.(-28)).times.16.sup.63.
In decimal terms this is approximately EQU 5.4.times.10.sup.(-79) .ltoreq.m.ltoreq.7.2.times.10.sup.75.
Others have attempted to use multiple fields in a computer word to extend the range of floating point magnitude representations within a digital computer. Illustrative, is Morris, U.S. Pat. No. 3,742,198, issued June 26, 1973, "Apparatus for Utilizing a Three-field Word to Represent a Floating Point Number". Morris subdivides a fixed length digital computer word into three fields. A first and second field is subdivided into a variable length exponent field and a variable length fraction field. The third field serves to specify the size of the variable length exponent field. This permits a tradeoff between accuracy and range in the floating point representation of the number.
It is accordingly an object of this invention to devise a method for extending the exponent range of numbers utilized by an IBM System/370-type floating point arithmetic processor while maintaining compatibility with existing floating point number representations.